perm filename IO.SAI[1,BGB] blob sn#001252 filedate 1972-10-22 generic text, type T, neo UTF8
00100	ENTRY INFEA,OUTFEA,	INFWN,OUTFWN,	INCAM,OUTCAM;
00200	BEGIN	"TVEDIO"
00300		REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
00400		REQUIRE "TRIGER[SYS,BGB]" SOURCE_FILE;
00500		REQUIRE "COMMON[IA,BGB]" SOURCE_FILE;
00600	
00700	α FEATURE DATUM - 3D LOCUS;
00800		REAL ARRAY ∂F[1:5];	α X,Y,Z,R,dR;
00900		REAL ARRAY ITEMVAR F;
01000		INTEGER ITEMVAR TV;
     

00100	INTERNAL PROCEDURE OUTFEA;
00200	BEGIN	"OUTFEA"
00300		STRING STR,BLANKS;
00400		INTEGER I,N,FLG;
00500		OPEN(1,"DSK",0,0,3,0,0,0);
00600	DO BEGIN
00700		OUTSTR(↓&9&"FEA FILE = ");
00800		STR	←	INCHWL;
00900		ENTER(1,STR&".FEA[F2D,BGB]",FLG);
01000	END	UNTIL ¬FLG;
01100		SETFORMAT(10,4);
01200		∀ F|FεFEASET DO
01300	BEGIN
01400		STR	←	CVIS(F,FLG);
01500		N	←	25 - LENGTH(STR);
01600		OUT(1,STR);
01700		OUT(1,"                           "[1 FOR N]);
01800		FOR I←1 STEP 1 UNTIL 5 DO
01900		OUT(1,CVG(∂(F)[I])&(IF I=5 THEN ↓ ELSE ""));
02000	END;
02100		OUT(1,"*"&↓);
02200		CLOSE(1);
02300		RELEASE(1);
02400		OUTSTR(9&"EOF."&↓&"*");
02500	END	"OUTFEA";
     

00100	INTERNAL PROCEDURE INFEA;
00200	BEGIN	"INFEA"
00300		STRING STR,LINE;
00400		INTEGER I,FLG,CNT,BRK,EOF;
00500		OPEN(1,"DSK",0,3,0,CNT,BRK,EOF);
00600	DO BEGIN OUTSTR(↓&9&"FEA FILE = ");
00700		STR	←	INCHWL;
00800		LOOKUP(1,STR&".FEA[F3D,BGB]",FLG);
00900	END	UNTIL ¬FLG;
01000		BREAKSET(1,13,"I");
01100		BREAKSET(1,10,"O");
01200		BREAKSET(2,32,"I");
01300		WHILE TRUE DO
01400	BEGIN	"LINE"
01500		CNT	←	150;
01600		LINE	←	INPUT(1,1);
01700		STR	←	SCAN(LINE,2,BRK);
01800		IF STR="*" THEN DONE;
01900		OUTSTR(9&STR&↓);
02000		IF EOF THEN DONE;
02100		FOR I←1 STEP 1 UNTIL 5 DO
02200		∂F[I]	←	REALSCAN(LINE,BRK);
02300		F	←	CVSI(STR,FLG);
02400		IF FLG THEN
02500	α CREATE A NEW FEATURE;
02600	BEGIN
02700		F	←	NEW(∂F);
02800		NEW_PNAME(F,STR);
02900		PUT F IN FEASET;
03000	END	ELSE
03100	α UPDATE AN OLD FEATURE'S DATUM;
03200		ARRBLT(∂(F)[1],∂F[1],5);
03300	END	"LINE";
03400		CLOSE(1);
03500		RELEASE(1);
03600		OUTSTR("EOF."&↓&"*");
03700	END	"INFEA";
     

00100	α FEATURE-WINDOW FILE OUTPUT;
00200	INTERNAL PROCEDURE OUTFWN;
00300	BEGIN	"OUTFWN"
00400		REAL ARRAY ITEMVAR FWN;
00500		INTEGER FLG,N1,N2;
00600		STRING STR,BLANKS,TVSTR,FEASTR;
00700		OPEN(1,"DSK",0,0,3,0,0,0);
00800	DO BEGIN OUTSTR(↓&9&"FWN FILE = ");
00900		STR	←	INCHWL;
01000		ENTER(1,STR&".FWN[F2D,BGB]",FLG);
01100	END	UNTIL ¬FLG;
01200		SETFORMAT(12,4);
01300		∀ TV|TVεTVSET DO
01400	BEGIN
01500		TVSTR	←	CVIS(TV,FLG);
01600		N1	←	8 - LENGTH(TVSTR);
01700		∀ F,FWN|TV⊗F≡FWN DO
01800	BEGIN
01900		FEASTR	←	CVIS(F,FLG);
02000		N2	←	25 - LENGTH(FEASTR);
02100		OUT(1,TVSTR);
02200		OUT(1,"                           "[1 FOR N1]);
02300		OUT(1,FEASTR);
02400		OUT(1,BLANKS[1 FOR N2]);
02500		OUT(1,CVG(∂(FWN)[1]));
02600		OUT(1,CVG(∂(FWN)[2]));
02700		OUT(1,CVG(∂(FWN)[3]));
02800		OUT(1,CVG(∂(FWN)[4]));
02900		OUT(1,CVG(∂(FWN)[5]));
03000		OUT(1,↓);
03100	END;
03200	END;
03300		OUT(1,"*");
03400		CLOSE(1);
03500		RELEASE(1);
03600		OUTSTR(9&"EOF."&↓&"*");
03700	END	"OUTFWN";
     

00100	INTERNAL PROCEDURE INFWN;
00200	BEGIN	"INFWN"
00300		STRING STR,LINE,TVSTR,FEASTR;
00400		REAL ARRAY ITEMVAR FWN; REAL ARRAY ∂FWN[1:5];
00500		INTEGER I,FLG,CNT,BRK,EOF;
00600	α FILE OPENING CEREMONIES;
00700		OPEN(1,"DSK",0,3,0,CNT,BRK,EOF);
00800	DO BEGIN OUTSTR(↓&9&"FWN FILE = ");
00900		STR	←	INCHWL;
01000		LOOKUP(1,STR&".FWN[F2D,BGB]",FLG);
01100	END	UNTIL ¬FLG;
01200		BREAKSET(1,13,"I");
01300		BREAKSET(1,10,"O");
01400		BREAKSET(2,32,"I");
01500	α EACH LINE CONTAINS: TVFILE FEATURE SX SY DX DY;
01600		WHILE TRUE DO
01700	BEGIN	"LINE"
01800		LABEL L;
01900	L:	CNT	←	150;
02000		LINE	←	INPUT(1,1);
02100		IF LENGTH(LINE)=0 THEN GO L;
02200		IF EOF THEN DONE;
02300		TVSTR	←	SCAN(LINE,2,BRK);
02400		IF TVSTR="*" THEN DONE;
02500		WHILE LINE=" " DO BRK←LOP(LINE);
02600		FEASTR	←	SCAN(LINE,2,BRK);
02700		FOR I←1 STEP 1 UNTIL 4 DO
02800		∂FWN[I]	←	REALSCAN(LINE,BRK);
02900	α SKIP THIS FEATURE IF ITS TV ITEM ISN'T AROUND;
03000		TV	←	CVSI(TVSTR,FLG);
03100		IF FLG THEN GO L;
     

00100	α MAKE A NEW FEATURE ITEM IF NECESSARY;
00200		F	←	CVSI(FEASTR,FLG);
00300		IF FLG THEN
00400	BEGIN	"FEA"
00500		REAL ARRAY ∂F[1:5];
00600		F	←	NEW(∂F);
00700		NEW_PNAME(F,FEASTR);
00800		PUT F IN FEASET;
00900	END	"FEA";
01000	
01100	α CHECK FOR OLD TRIPLE;
01200		FLG	←	TRUE;
01300		∀ FWN|TV⊗F≡FWN DO
01400	BEGIN
01500		ARRBLT(∂(FWN)[1],∂FWN[1],4);
01600		FLG	←	FALSE;
01700	END;
01800	α MAKE A NEW FWINDO ITEM AND TRIPLE;
01900		IF FLG THEN
02000	BEGIN
02100		FWN	←	NEW(∂FWN);
02200		MAKE TV⊗F≡FWN;
02300		OUTSTR(9&"MAKE "&TVSTR&" ⊗ "&FEASTR&" ≡ #"&CVS(#(FWN))&↓);
02400	END;
02500	END	"LINE";
02600		CLOSE(1);
02700		RELEASE(1);
02800		OUTSTR("EOF."&↓&"*");
02900	END	"INFWN";
     

00100	INTERNAL PROCEDURE OUTCAM;
00200	BEGIN	"OUTCAM"
00300		REAL ARRAY ITEMVAR CAM;
00400		STRING STR;
00500		INTEGER FLG;
00600		OPEN(1,"DSK",8,0,2,0,0,0);
00700	DO BEGIN OUTSTR(↓&9&"CAM FILE = ");
00800		STR	←	INCHWL;
00900		ENTER(1,STR&".CAM[CAM,BGB]",FLG);
01000	END	UNTIL ¬FLG;
01100	α OUTPUT THE CAMERA LOCOR OF TVFILES;
01200		∀ TV,CAM|TVεTVSET ∧ LOCOR⊗TV≡CAM DO
01300	BEGIN
01400		WORDOUT(1,CVSIX(CVIS(TV,FLG)));
01500		ARRYOUT(1,∂(CAM)[1,1],12);
01600	END;
01700		RELEASE(1);
01800		OUTSTR(9&"EOF."&↓&"*");
01900	END	"OUTCAM";
02000	
     

00100	INTERNAL PROCEDURE INCAM;
00200	BEGIN	"INCAM"
00300		STRING STR;
00400		INTEGER FLG,N,EOF;
00500		REAL ARRAY ITEMVAR CAM;
00600		REAL ARRAY ∂CAM[1:4,1:3];
00700		OPEN(1,"DSK",8,2,0,0,0,EOF);
00800	DO BEGIN OUTSTR(↓&9&"CAM FILE = ");
00900		STR	←	INCHWL;
01000		LOOKUP(1,STR&".CAM[CAM,BGB]",FLG);
01100	END	UNTIL ¬FLG;
01200		BREAKSET(2,32,"I");
01300	α INPUT THE CAMERA LOCOR OF EXISTENT TVFILES;
01400		WHILE TRUE DO
01500	BEGIN	"LOOP"
01600		STRING TVSTR;
01700		LABEL EOL;
01800	EOL:	N	←	WORDIN(1);
01900		IF N=0 ∨ EOF THEN DONE;
02000		ARRYIN(1,∂CAM[1,1],12);
02100		TVSTR	←	CVXSTR(N);
02200		TVSTR	←	SCAN(TVSTR,2,FLG);
02300		TV	←	CVSI(TVSTR,FLG);
02400		IF FLG THEN GO EOL;
02500		FLG	←	TRUE;
02600		∀ CAM|LOCOR⊗TV≡CAM DO
02700	BEGIN
02800		FLG	←	FALSE;
02900		ARRBLT(∂(CAM)[1,1],∂CAM[1,1],12);
03000	END;
03100		IF FLG THEN
03200	BEGIN
03300		CAM	←	NEW(∂CAM);
03400		MAKE LOCOR⊗TV≡CAM;
03500		OUTSTR("	MAKE LOCOR ⊗ "&TVSTR&" ≡ "&CVS(#(CAM))&↓);
03600	END;
03700	END	"LOOP";
03800		RELEASE(1);
03900		OUTSTR("EOF."&↓&"*");
04000	END	"INCAM";
04100	END	"TVEDIO";